The Stream Control Transmission Protocol (SCTP) is a transport layer protocol, serving in a similar role to the Transmission Control Protocol (TCP) and User Datagram Protocol (UDP). SCTP is message-oriented like UDP and ensures reliable, in-sequence transport of messages with congestion control like TCP. SCTP protocol was defined by the IETF Signaling Transport (SIGTRAN) working group in 2000, and is maintained by the IETF Transport Area (TSVWG) working group. RFC 4960 defines the protocol, and RFC 3286 provides an introduction.
SCTP is a reliable transport protocol operating on top of a connectionless packet network such as IP. SCTP is connection-oriented in nature, but the SCTP association is a broader concept than the TCP connection. Application data is transmitted in messages to the SCTP transport layer. SCTP places messages and control information into separate chunks (data chunks and control chunks), each identified by a chunk header. A message can be fragmented over a number of data chunks, each chunk containing data from one user message. SCTP chunks are bundled into SCTP packets. Each SCTP packet is submitted to the Internet Protocol (IP) layer, and includes a packet header, SCTP control chunks when necessary, and SCTP data chunks when available.
SCTP enables each SCTP endpoint (e.g. a client) to provide the other endpoint (e.g. a server) with a list of transport addresses (i.e. multiple IP addresses in combination with an SCTP port) through which the endpoint can be reached and from which the endpoint will originate SCTP packets. The association spans transfers over all of the possible source/destination combinations that may be generated from the list of each endpoint.
There may be times when the processing resources at one endpoint prevent or hinder the endpoint from successfully continuing its association with the application, and would be better to resume the association on another node where processing resources are available or simply when maintenance is scheduled on a node and migrating the association to a standby node is required. Such a migration should be performed in a controlled sequence in order to be transparent to the application at the non-moving end of the association.
In a typical scenario, a farm of similar servers can handle an association with any client. The workload is distributed amongst the serving nodes, but can be required to move some of the workload between serving nodes, therefore requiring existing SCTP associations to be moved seamlessly from the point of view of the client. Current SCTP migration techniques do not permit such seamless transition. Instead, the stationary client is typically aware that the application is moving. Also, packets are lost as a result of the migration process. Packet loss can reduce the quality of many types of applications, e.g. such as streaming video.